package com.lzw.DailyAudit.service.dateAggregation_02.DailyAudit;

import com.hooya.fa.eu.biz.DailyAudit.service.dataWarehousing_05.DataEntry;
import com.hooya.fa.eu.biz.DailyAudit.service.dateAggregation_02.*;
import com.hooya.fa.eu.biz.DailyAudit.service.dealSourceData_01.DailyStkCollectionService;
import com.hooya.fa.eu.biz.DailyAudit.service.dealSourceData_01.KcjlHy;
import com.hooya.fa.eu.biz.DailyAudit.service.dealSourceData_01.Post_Test;
import com.hooya.fa.eu.biz.DailyAudit.service.dealSourceData_01.Pre_Test;
import com.hooya.fa.eu.biz.DailyAudit.service.generateInvoices_03.AddInvoiceNo;
import com.hooya.fa.eu.biz.DailyAudit.service.generateInvoices_03.Insert_Add_Invoice;
import com.hooya.fa.eu.biz.DailyAudit.service.generateInvoices_03.Insert_Transfer_Invoice;
import com.hooya.fa.eu.biz.DailyAudit.service.generateInvoices_03.Update_InvoiceNo;
import com.hooya.fa.eu.biz.DailyAudit.service.issueReports_04.Inout;
import com.hooya.fa.eu.biz.DailyAudit.service.issueReports_04.ProfitCheck;
import com.hooya.fa.eu.biz.DailyAudit.service.issueReports_04.StockList;
import com.hooya.fa.eu.biz.service.impl.StkCollectionServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
public class DailyAuditService {


	@Autowired
	private Pre_Test preTest;

	@Autowired
	private KcjlHy kcjlHy;

	@Autowired
	private Post_Test post_test;

	@Autowired
	private Insert_B2B insert_b2b;

	@Autowired
	private Insert_B2C insert_b2C;

	@Autowired
	private Insert_BS insert_bs;

	@Autowired
	private Insert_CG insert_cg;

	@Autowired
	private Insert_ZY insert_zy;

	@Autowired
	private Insert_TH insert_th;

	@Autowired
	private Reset_Sku_Flag reset_sku_flag;

	@Autowired
	private Insert_Add_Invoice insert_add_invoice;

	@Autowired
	private Insert_Transfer_Invoice insert_transfer_invoice;

	@Autowired
	private Update_InvoiceNo update_invoiceNo;

	@Autowired
	private Inout inout;

	@Autowired
	private StockList stockList;

	@Autowired
	private ProfitCheck profitCheck;

	@Autowired
	private postTest postTest;

	@Autowired
	private AddInvoiceNo addInvoiceNo;

	@Autowired
	private DailyStkCollectionService dailyStkCollectionService;

	@Autowired
	private DataEntry dataEntry;

	@Autowired
	private StkCollectionServiceImpl StkCollectionService;

	@GetMapping("/DailyAudit")
	public void auditRun() {

		// 设置当天时间 -- 日审计
//		String startDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
//		String endDate = LocalDate.now().plusDays(1).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
//		int num = 1;

		// 设置当天时间 -- 日审计
		String startDate = "2025-10-05";
		String endDate = "2025-10-06";
		int num = 1;

//		StkCollectionService.generatorCollectionData(startDate, endDate, num);

		dealSourceData_01(startDate, endDate, num);     							// TODO - stk 校验 进行中 - 部分数据是由于数据的问题 而不是 代码层面的问题
		dateAggregation_02(startDate);												//在未修改数据源之前 最终测试完成
		generateInvoices_03(startDate);												//在未修改数据源之前 最终测试完成
//		issueReports_04(startDate);													//在未修改数据源之前 最终测试完成  -  利润表的汇率的问题是由于时间设置失误导致的
//		dataEntry_05(startDate);													//在未修改数据源之前 最终测试完成

	}

	private void dataEntry_05(String currentDate) {
		dataEntry.dataEntry(currentDate); 										   					//在未修改数据源之前 最终测试完成  -  这里没有问题
	}

	private void issueReports_04(String currentDate) {
		inout.inout(currentDate, "costway-pl", "PL");								//在未修改数据源之前 最终测试完成  -  这里没有问题
		inout.inout(currentDate, "costway-fr", "FR");								//在未修改数据源之前 最终测试完成  -  这里没有问题
		stockList.stockList(currentDate);															//在未修改数据源之前 最终测试完成  -  这里没有问题
		profitCheck.profitCheck(currentDate);  														//在未修改数据源之前 最终测试完成  -  这里没有问题
	}

	private void generateInvoices_03(String currentDate) {
		insert_add_invoice.insert_add_invoice(currentDate); 	                    				//在未修改数据源之前 最终测试完成  -  这里没有问题
		insert_transfer_invoice.insert_transfer_invoice(currentDate); 								//在未修改数据源之前 最终测试完成  -  这里没有问题
		addInvoiceNo.getInvoiceNo(currentDate); 													//在未修改数据源之前 最终测试完成  -  这里没有问题
		update_invoiceNo.update_invoiceno(currentDate); 											//在未修改数据源之前 最终测试完成  -  这里没有问题
	}

	private void dateAggregation_02(String currentDate) {
		insert_b2b.insert_b2b(currentDate); 														//在未修改数据源之前 最终测试完成  -  // 这里的问题解决 - 采用 本月的第一天 - 当天的时间
		insert_b2C.insert_b2c(currentDate); 														//在未修改数据源之前 最终测试完成  -  这里没有问题
		insert_bs.insert_bs(currentDate);   														//在未修改数据源之前 最终测试完成  -  这里的海运费之类的东西和海运费与当天的时差有一定的关系，不一致正常
		insert_cg.insert_cg(currentDate);   														//在未修改数据源之前 最终测试完成  -  这里没有问题
		insert_th.insert_th(currentDate);   														//在未修改数据源之前 最终测试完成  -  这里的海运费之类的东西和海运费与当天的时差有一定的关系，不一致正常
		insert_zy.insert_zy(currentDate);   														//在未修改数据源之前 最终测试完成  -  // 这里的问题解决 - 采用 本月的第一天 - 当天的时间
		postTest.PostTest(currentDate);     														//在未修改数据源之前 最终测试完成  -  这里没有问题
		reset_sku_flag.reset_sku_flag(currentDate); 												//在未修改数据源之前 最终测试完成  -  这里没有问题
	}

	private void dealSourceData_01(String startDate, String endDate, int num) {
		preTest.preTest(startDate);  																//在未修改数据源之前 最终测试完成  -  这里没有问题
		dailyStkCollectionService.generatorCollectionData(startDate, endDate, num); 				// TODO - 目前测试有异常 或许真的是数据的问题 - 是的 数据的问题而不是代码的问题 那也就是说 代码层面 是正确的  所有一切的数据不正确的源泉
		kcjlHy.KcjlHy(startDate);  																	//在未修改数据源之前 最终测试完成  -  这里没有问题
		post_test.postTest(startDate);  															//在未修改数据源之前 最终测试完成  -  这里没有问题
	}


}
